home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2007 December / PCWKCD1207B.iso / Blogowanie poza sfera / Flock 1.0 beta / flock-1.0RC3.en-US.win32.exe / flock / components / flockMigrateRDF.js < prev    next >
Text File  |  2007-10-18  |  4KB  |  125 lines

  1. // BEGIN FLOCK GPL
  2. //
  3. // Copyright Flock Inc. 2005-2007
  4. // http://flock.com
  5. //
  6. // This file may be used under the terms of of the
  7. // GNU General Public License Version 2 or later (the "GPL"),
  8. // http://www.gnu.org/licenses/gpl.html
  9. //
  10. // Software distributed under the License is distributed on an "AS IS" basis,
  11. // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  12. // for the specific language governing rights and limitations under the
  13. // License.
  14. //
  15. // END FLOCK GPL
  16.  
  17. const CC = Components.classes;
  18. const CI = Components.interfaces;
  19. const CR = Components.results;
  20. const CU = Components.utils;
  21.  
  22. CU.import("resource:///modules/FlockXPCOMUtils.jsm");
  23.  
  24. const MIGRATE_RDF_CLASSNAME = "Flock Migrate RDF";
  25. const MIGRATE_RDF_CLASSID =
  26.   Components.ID("{152481d4-1db7-4703-ad56-55d2d940e6fb}");
  27. const MIGRATE_RDF_CONTRACTID = "@flock.com/migrate-rdf;1";
  28.  
  29. const FLOCK_NS = "http://flock.com/rdf#";
  30.  
  31. const RDFS = CC["@mozilla.org/rdf/rdf-service;1"]
  32.              .getService(CI.nsIRDFService);
  33.  
  34. const TYPES_TO_DELETE = ["Action", "DragAction", "DragFlavour"];
  35.  
  36. function MigrateRDF() {
  37.   this._logger = CC["@flock.com/logger;1"].createInstance(CI.flockILogger);
  38.   this._logger.init("migrateRDF");
  39.  
  40.   this.migrationName = "Obsolete Data";
  41. }
  42.  
  43. MigrateRDF.prototype = new FlockXPCOMUtils.genericComponent(
  44.   MIGRATE_RDF_CLASSNAME,
  45.   MIGRATE_RDF_CLASSID,
  46.   MIGRATE_RDF_CONTRACTID,
  47.   MigrateRDF,
  48.   CI.nsIClassInfo.SINGLETON,
  49.   [CI.flockIMigratable]
  50. );
  51.  
  52. MigrateRDF.prototype._xpcom_categories = [
  53.   { category: "flockMigratable" }
  54. ];
  55.  
  56. MigrateRDF.prototype.needsMigration =
  57. function MigrateRDF_needsMigration(aOldVersion) {
  58.   return (aOldVersion.substr(0, 3) == "0.9");
  59. }
  60.  
  61. MigrateRDF.prototype.startMigration =
  62. function MigrateRDF_startMigration(aOldVersion, aListener) {
  63.   this._logger.debug("starting up...");
  64.   aListener.onUpdate(0, "Removing obsolete data");
  65.  
  66.   var ds = RDFS.GetDataSource("rdf:flock-favorites");
  67.   var ctxt = { listener: aListener, ds: ds };
  68.   return { wrappedJSObject: ctxt };
  69. }
  70.  
  71. MigrateRDF.prototype.finishMigration =
  72. function MigrateRDF_finishMigration(aWrapper) {
  73. }
  74.  
  75. MigrateRDF.prototype.doMigrationWork =
  76. function MigrateRDF_doMigrationWork(aWrapper) {
  77.   var ctxt = aWrapper.wrappedJSObject;
  78.   var ds = ctxt.ds;
  79.  
  80.   var coopType = RDFS.GetResource(FLOCK_NS + "CoopType");
  81.  
  82.   for each (var type in TYPES_TO_DELETE) {
  83.     var type = RDFS.GetResource(FLOCK_NS + type);
  84.     var resources = [];
  85.  
  86.     var resourceEnum = ds.GetSources(coopType, type, true);
  87.     while (resourceEnum.hasMoreElements()) {
  88.       var resource = resourceEnum.getNext().QueryInterface(CI.nsIRDFResource);
  89.       resources.push(resource);
  90.     }
  91.  
  92.     for each (var resource in resources) {
  93.       this._logger.debug("removing " + resource.ValueUTF8);
  94.  
  95.       ds.Unassert(resource, coopType, type);
  96.  
  97.       var arcs = ds.ArcLabelsIn(resource);
  98.       while (arcs.hasMoreElements()) {
  99.         var arc = arcs.getNext().QueryInterface(CI.nsIRDFResource);
  100.         var sources = ds.GetSources(arc, resource, true);
  101.         while (sources.hasMoreElements()) {
  102.           var source = sources.getNext().QueryInterface(CI.nsIRDFResource);
  103.           ds.Unassert(source, arc, resource);
  104.         }
  105.       }
  106.  
  107.       arcs = ds.ArcLabelsOut(resource);
  108.       while (arcs.hasMoreElements()) {
  109.         var arc = arcs.getNext().QueryInterface(CI.nsIRDFResource);
  110.         var targets = ds.GetTargets(resource, arc, true);
  111.         while (targets.hasMoreElements()) {
  112.           var target = targets.getNext().QueryInterface(CI.nsIRDFNode);
  113.           ds.Unassert(resource, arc, target);
  114.         }
  115.       }
  116.     }
  117.   }
  118. }
  119.  
  120.  
  121. var gComponentsArray = [MigrateRDF];
  122.  
  123. var NSGetModule = FlockXPCOMUtils.generateNSGetModule(MIGRATE_RDF_CLASSNAME,
  124.                                                       gComponentsArray);
  125.